package metier;

import java.util.Date;

/**
 * @author Vincent AMODEOS
*
*/

public abstract class Semestre {
	/* Attributs priv�s*/
	private String nom ="";   //nom du semestre
	private AnneeEtude annee = null; //ann�e d'�tude dans laquelle le semestre est compris
	private Date dateDebut; // date de d�but du semestre
	private Date dateFin; // date de fin du semestre
        private int id = 0;
	

        
	public Semestre (String nom, AnneeEtude annee, Date debut, Date fin) {
		this.nom = nom;
		this.annee = annee;
		this.dateDebut = debut;
		this.dateFin = fin;
	}
	
	/*accesseur*/
        public Semestre(){
            
        }
	
	/**
	 * @return le nom du semestre
	 */
	public String getNom() {return nom;}
	/**
	 * @param nom le nom du semestre
	 */
	public void setNom(String nom) {this.nom = nom;}
	/**
	 * @return l'ann�e d'etude du semestre
	 */
	public AnneeEtude getAnnee() {return annee;}
	/**
	 * @param ann�e l'ann�e d'etude du semestre
	 */
	public void setAnnee(AnneeEtude annee) {this.annee = annee;}
	/**
	 * @return la date de D�but du semestre
	 */
	public Date getDateDebut() {return dateDebut;}
	/**
	 * @param dateD�but la date de D�but du semestre
	 */
	public void setDateDebut(Date dateDebut) {this.dateDebut = dateDebut;}
	/**
	 * @return la date de fin du semestre
	 */
	public Date getDateFin() {return dateFin;}
	/**
	 * @param dateFin la date de fin du semestre
	 */
	public void setDateFin(Date dateFin) {this.dateFin = dateFin;}

    public int getId() {
        return id;
    }

    protected void setId(int id) {
        this.id = id;
    }


	/* M�thodes abstraites */
	/**
	 * @throws ExceptionMetier 
	 * M�thode qui permet d'ins�rer le semestre dans le syst�me de stockage
	 */
	public abstract void insert() throws ExceptionMetier;
	/**
	 * @throws ExceptionMetier 
	 * M�thode qui permet de mettre � jour le semestre dans le syst�me de stockage
	 */
	public abstract void update() throws ExceptionMetier;
	/**
	 * @param idSemestre l'identifiant unique de la seance
	 * @throws ExceptionMetier 
	 * M�thode qui permet de charger le semestre � partir du syst�me de stockage
	 */
	public abstract void load(int idSemestre) throws ExceptionMetier;
	/**
	 * @throws ExceptionMetier 
	 * M�thode qui permet de supprimer le semestre dans le syst�me de stockage
	 */
	public abstract void delete() throws ExceptionMetier;
}
